<%@page import="java.util.Vector"%>
<%@ page import="tmanager.*" import="java.sql.*" %>
<%@ include file="/WEB-INF/sql.jsp" %>

<%
    //Inizializzazione di variabili
    int numMessNNLetti = 0;
    boolean isStudente = true;
    boolean allMessProf = true;
    Studente studenteSessione = null;
    Professore professoreSessione = null;
    int idStudente = -1;
    String[] parDisp = new String[2];
    parDisp[0] = "pari";
    parDisp[1] = "dispari";
    String messNNLetto = "messNNLetto";
    String tuttiMessaggi = "tuttiMessaggi";
    String ricevutiMessaggi = "ricevutiMessaggi";
    String inviatiMessaggi = "inviatiMessaggi";
    
    //Se l'utente loggato è uno studente recupero l'oggetto studente 
    if (session.getAttribute("tmanager.studente") != null) {
        studenteSessione = (Studente) session.getAttribute("tmanager.studente");
        allMessProf = false;
    //altrimenti se è un professore recupero l'oggetto professore
    } else if (session.getAttribute("tmanager.professore") != null) {
        professoreSessione = (Professore) session.getAttribute("tmanager.professore");
        isStudente = false;
        //Se è presente in sessione anche l'id di uno studente lo recupero
        if (session.getAttribute("tmanager.idStudente") != null) {
            idStudente = (Integer) session.getAttribute("tmanager.idStudente");
            allMessProf = false;
        }
    } else {//Qualora l'utente non fosse autenticato, la sessione non è valida e reindirizzo l'utente alla home
        response.sendRedirect("../index.jsp");
        return;
    }
    
    //Recupero i messaggi ricevuti e inviati
    Vector<Messaggio> messRicevuti = new Vector<Messaggio>();
    Vector<Messaggio> messInviati = new Vector<Messaggio>();
    try {
        if (allMessProf) {//Se l'utente è un professore e non è selezionato uno studente specifico
            //recupero i messaggi di tutti gli studenti
            messRicevuti = messaggiProdottiProfessore(messaggiRicevutiProf, professoreSessione, -1);
            messInviati = messaggiProdottiProfessore(messaggiInviatiProf, professoreSessione, -1);
        } else {
            if (isStudente) {//Se l'utente è uno studente recupero i messaggi scambiati col suo relatore
                messRicevuti = messaggiProdottiStudente(messaggiRicevuti, studenteSessione);
                messInviati = messaggiProdottiStudente(messaggiInviati, studenteSessione);
            } else {//Altrimenti l'utente è un professore e ha selezionato uno studente specifico,
                //recupero quindi i messaggi scambiati con quello studente
                messRicevuti = messaggiProdottiProfessore(messaggiRicevuti, professoreSessione, idStudente);
                messInviati = messaggiProdottiProfessore(messaggiInviati, professoreSessione, idStudente);
            }
        }
    } catch (SQLException e) {
        session.setAttribute("tmanager.erroreTitolo", "Errore di accesso al db");
        session.setAttribute("tmanager.erroreMessaggio", "Siamo spiacenti ma si è verificato un errore in fase di accesso al database per il recupero dei messaggi. Si consiglia di riprovare più tardi.");
        response.sendRedirect("../errore.jsp");
        return;
    }

    response.setHeader("Cache-Control", "no-cache");
    response.setHeader("Pragma", "no-cache");
    response.setDateHeader("Expires", 0);
    
    //Conto il numero di messaggi non letti
    for (int i = 0; i < messRicevuti.size(); i++) {
        Messaggio m = messRicevuti.elementAt(i);
        if (!m.getMessaggioLetto()) {
            numMessNNLetti++;
        }
    }

%>


<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Messaggi</title>
        <link rel="stylesheet" type="text/css" href="../CSS/defaultStyle.css" />
    </head>
    <body>
        <%@include file="../WEB-INF/jspf/header.jspf" %>
        <script type="text/javascript" src="../Scripts/scripts.js"></script>
        <script type="text/javascript"> 
            var tipoRicerca;
            var keyword;
            
            function espandiRicevuti(){
                //$("#riepilogoInviati").slideToggle(1000);
                if(!$("#riepilogoInviati").is(":visible")){
                    ripristinaLink();
                    
                    $("#riepilogoRicevuti").css({'width':'', 'overflow': ''});
                    $("#riepilogoRicevuti").addClass('riepilogoMess');
                    $("#riepilogoInviati").slideToggle(1000);
                    
                }else{
                    if($("#riepilogoRicevuti").height()>410){
                        var altezzaCorpo=$("#corpo").height();
        
                        linkVistaPrecedenteRic();
                        $("#riepilogoInviati").slideToggle(1000);
                        $("#riepilogoRicevuti").removeClass('riepilogoMess');
                        $("#riepilogoRicevuti").css({'width':altezzaCorpo, 'overflow': 'auto'});
                    }
                }
            }
            function espandiInviati(){
                if(!$("#riepilogoRicevuti").is(":visible")){
            
                    ripristinaLink();
                    $("#riepilogoInviati").css({'width':'', 'overflow': ''});
                    $("#riepilogoInviati").addClass('riepilogoMess');
                    $("#riepilogoRicevuti").slideToggle(1000);
            
                }else{
                    if($("#riepilogoInviati").height()>410){
                        var altezzaCorpo=$("#corpo").height();
                        linkVistaPrecedenteInv();
                        $("#riepilogoRicevuti").slideToggle(1000);
                        $("#riepilogoInviati").removeClass('riepilogoMess');
                        $("#riepilogoInviati").css({'width':altezzaCorpo, 'overflow': 'auto'});
                    }
                }
            }
            
            function linkMessInv(messaggio){
                var stringa=messaggio;
                $("<li class=\"moveToSection\"><a href=\"#messaggiInviati\" onclick=\"espandiInviati();return false;\">"+stringa+"</a></li>").prependTo(".menuRieplogo ul");
            };
            
            function linkMessRic(messaggio){
                var stringa=messaggio;
                $("<li class=\"moveToSection\"><a href=\"#messaggiRicevuti\" onclick=\"espandiRicevuti();return false;\">"+stringa+"</a></li>").prependTo(".menuRieplogo ul");

            }
            
            
            function ripristinaLink(){
                $(".moveToSection").remove();
                linkMessInv("Espandi messaggi inviati");
                linkMessRic("Espandi messaggi ricevuti");
            }
            
            function linkVistaPrecedenteRic(){
                $(".moveToSection").remove();
            
                linkMessRic("Vista precedente");
            }
            
            function linkVistaPrecedenteInv(){
                $(".moveToSection").remove();
            
                linkMessInv("Vista precedente");
            }
            
            function validazione(event) {
                event.preventDefault(); 
                eseguiRicerca(event);
                    //$(".ricerca").remove();
                    $("<div id=\"richiestaRicerca\"><div id=\"risultatoRicerca\" class=\"riepilogoMess\"></div></div>").prependTo("#corpoSx");
                    
                    var tipoRicerca=$(":selected").val();
                    var keyword=$("#campoRicerca").val();
                    //alert(tipoRicerca);
                    $("#risultatoRicerca").load("cercaMessaggio.jsp", {"tipoRicerca":tipoRicerca, "keyword":keyword});
                    
                    
                
                
                
                
                
            }
            function eseguiRicerca(event){
            event.preventDefault(); 
            tipoRicerca=$(":selected").val();
            keyword=$("#campoRicerca").val();
            if($("#campoRicerca").val()=="" && $("#ricercaSx").size()==0){
                    alert("Inserisci la stringa da ricercare nei messaggi!"); 
                    
                }else{
                    if($("#ricercaSx").size()==0){
                        $("<div id=\"richiestaRicerca\"><div id=\"risultatoRicerca\" class=\"riepilogoMess\"></div></div>").prependTo("#corpoSx");
                        inserisciRicercaSx();
                    }
                        
                        //alert(tipoRicerca);
                        $("#risultatoRicerca").load("cercaMessaggio.jsp", {"tipoRicerca":tipoRicerca, "keyword":keyword});
                    
                    
                }
            }
            
            function inserisciRicercaDx(){
                $("<div class=\"ricerca\"><form id=\"ricerca\" method=\"post\" action=\"#\"><fieldset><legend>Ricerca nei messaggi:</legend><input id=\"campoRicerca\" type=\"text\" name=\"campoRicerca\"><br/><label for=\"tipoRicerca\">Cerca in:</label><select><option value=<%=tuttiMessaggi%>>Tutti i messaggi</option><option value=<%=ricevutiMessaggi%>>Solo ricevuti</option><option value=<%=inviatiMessaggi%>>Solo inviati</option></select><input id=\"avviaRicerca\" type=\"submit\" name=\"procedi\" value=\"Procedi..\" /><input type=\"reset\" name=\"reset\" value=\"Reset\" /><br /></fieldset></form></div>").appendTo("#corpoDx");
                $("#avviaRicerca").click(eseguiRicerca);
            }
            
            function inserisciRicercaSx(){
                $("<form id=\"ricercaSx\" method=\"post\" action=\"#\" name=\"ricercaSx\"><fieldset><legend>Ricerca nei messaggi:</legend><input id=\"campoRicerca\" type=\"text\" name=\"campoRicerca\" value=\""+keyword+"\"> <label for=\"tipoRicerca\">Cerca in:</label><select name=\"selezione\"><option value=<%=tuttiMessaggi%>>Tutti i messaggi</option><option value=<%=ricevutiMessaggi%>>Solo ricevuti</option><option value=<%=inviatiMessaggi%>>Solo inviati</option></select> <input id=\"avviaRicerca\" type=\"submit\" name=\"procedi\" value=\"Procedi..\" /> <input type=\"reset\" name=\"reset\" value=\"Reset\" /><br /></fieldset></form>").prependTo("#richiestaRicerca");
                $(".ricerca").remove();
                $("#campoRicerca").keyup(eseguiRicerca);
                $("#avviaRicerca").click(eseguiRicerca);
                if (tipoRicerca == "<%=tuttiMessaggi%>") {
                    document.ricercaSx.selezione[0].selected = "1"
                }else if(tipoRicerca == "<%=ricevutiMessaggi%>"){
                    document.ricercaSx.selezione[1].selected = "1"
                }else{
                    document.ricercaSx.selezione[2].selected = "1"
                }
            }
    
            function inizializza(){
                $("#Hmessaggi").addClass("paginaCorrente");
                //$("#Hmessaggi").css("color","blue"); <--provami!!
                if("<%=idStudente%>"!=-1){
                    inserisciRicercaDx();
                }
                
                if($("#riepilogoRicevuti").height()<410 && $("#riepilogoInviati").height()<410){
                    $(".menuRieplogo").remove();
                    
                }else{
                    ripristinaLink();                               
                }
            };
            $(document).ready(inizializza);
        </script>
        <div id="corpo">
            <div id="corpoDx">
                <div class="menuRieplogo">
                    <ul>
                        <li class="moveToSection"><a href="#messaggiRicevuti" onclick="espandiRicevuti();return false;">MessaggiRicevuti</a></li>
                        <li class="moveToSection"><a href="#messaggiInviati" onclick="espandiInviati();return false;">MessaggiInviati</a></li>
                        <% if (!allMessProf) {%>
                        <li><a href="../Messaggio/invioMessaggio.jsp" >Invia un messaggio</a></li>
                        <% }%>
                    </ul>
                </div>

            </div>
            <div id="corpoSx">
                <div class="riepilogoMess" id="riepilogoRicevuti">
                    <a name="messaggiRicevuti"></a>
                    <h2>Messaggi Ricevuti&nbsp;&nbsp;(da leggere: <%=numMessNNLetti%>)</h2>
                    <div>
                        <table border="1">
                            <thead>
                                <tr class="titoli">
                                    <th>Mittente</th>
                                    <th>Destinatario</th>
                                    <th>Oggetto</th>
                                    <th>Data</th>
                                    <th>Risposta Inviata</th>
                                </tr>
                            </thead>
                            <tbody>
                                <%
                                    if (messRicevuti.isEmpty()) {
                                %>
                                <tr class="<%= parDisp[0]%>"><td colspan="6"><i>Non ci sono messaggi.</i></td></tr>
                                <%                        } else {
                                    for (int i = 0; i < messRicevuti.size(); i++) {
                                        Messaggio m = messRicevuti.elementAt(i);
                                %>
                                <tr class="<%= parDisp[i % 2]%> <%= (!m.getMessaggioLetto()) ? messNNLetto : ""%> " >
                                    <td><%= m.getMittente()%></td>
                                    <td><%= m.getDestinatario()%></td>
                                    <td><a href="../Messaggio/visualizzaMessaggio.jsp?idMessaggio=<%= m.getTime()%>" ><%= m.getOggetto()%></a></td>
                                    <td><%= Utility.formatData(m.getTimestamp())%></td>
                                    <td><input type="checkbox" disabled="disabled"<% if (m.getRispostaInviata()) {%>checked="checked"<%}%> /></td>
                                </tr>
                                <%
                                        }
                                    }
                                %>
                            </tbody>
                        </table>
                    </div>
                </div>
                <div id="riepilogoInviati" class="riepilogoMess">
                    <a name="messaggiInviati"></a>
                    <h2>Messaggi Inviati</h2>
                    <div id="tabInviati">
                        <table border="1">
                            <thead>
                                <tr class="titoli">
                                    <th>Mittente</th>
                                    <th>Destinatario</th>
                                    <th>Oggetto</th>
                                    <th>Data</th>
                                </tr>
                            </thead>
                            <tbody>
                                <%
                                    if (messInviati.isEmpty()) {
                                %>
                                <tr class="<%= parDisp[0]%>"><td colspan="6"><i>La casella messaggi è vuota!</i></td></tr>
                                <%    } else {
                                    for (int i = 0; i < messInviati.size(); i++) {
                                        Messaggio m = messInviati.elementAt(i);
                                %>
                                <tr class="<%= parDisp[i % 2]%>" >
                                    <td><%= m.getMittente()%></td>
                                    <td><%= m.getDestinatario()%></td>
                                    <td><a href="../Messaggio/visualizzaMessaggio.jsp?idMessaggio=<%= m.getTime()%>"><%= m.getOggetto()%></a></td>
                                    <td><%= Utility.formatData(m.getTimestamp())%></td>
                                </tr>
                                <%
                                        }
                                    }
                                %>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
        <hr />
        <%@include file="../WEB-INF/jspf/footer.jspf" %>
    </body>
</html>
